Estoy tratando de validar/permitir un conjunto de palabras como +originalUrl, -originalUrl, +createdAt usando express-validator.
es compatible con .matches que permite patrones. https://github.com/validatorjs/validator.js/
este es mi patrón
query('sort_by') .optional() .matches(/^(+originalUrl|-originalUrl)$/) .withMessage({ error: 'Invalid parameter value', detail: { max_results: 'parameter value (+originalUrl|-originalUrl) is allowed', }, }), probé .matches(/^(\+originalUrl|-originalUrl)$/) pero no funcionó.
De alguna manera siento que hay un problema con la lectura de "+" . En mi backend, + está codificado como% 20, así que intenté reemplazar + con% 20 pero no tuve suerte.
Actualización: al iniciar sesión, los parámetros de consulta + se tratan como ' orignalUrl' y .isIn([' orginalUrl'] funciona ahora, pero aún así, ¿cómo transformo o consulto en + porque alguien puede ingresar 'originalUrl'? Esto seguirá funcionando, por lo que se valida qué no es deseable
intenté preguntarle a la gente del validador también -> https://github.com/express-validator/express-validator/issues/1122
¿Cómo verifico si hay +algo?
envíalo como %20 y haz un escape
query('sort_by') .optional() .unescape() .matches(/^(+originalUrl|-originalUrl)$/) .withMessage({ error: 'Invalid parameter value', detail: { max_results: 'parameter value (+originalUrl|-originalUrl) is allowed', }, })